﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.DataContractToBusinessEntity
{
    //Task  : 5617 
    // Data : 13/03/2009
    // Autor:Apsilva
    /// <summary>
    /// Classe Translator  DataContract  para BussinessEntity 
    /// </summary>
    public class DescontoCliente
    {
        public BusinessEntity.DescontoCliente ToDescontoCliente(DataContract.Request.DescontoClienteRequest request)
        {
            BusinessEntity.DescontoCliente to = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.DescontoCliente();
            to.ApelidoCliente = request.ApelidoCliente;
            to.CodigoCliente = request.CodigoCliente;
            to.PercentualDescontoAcresimo = request.PercentualDescontoAcresimo;
            if (request.TipoOperacao !=null) 
                to.TipoOperacao = (BusinessEntity.Enum.TipoOperacaoDesconto)request.TipoOperacao;
            return to; 
        }


        public List<BusinessEntity.DescontoCliente> ToDescontoCliente(List<DataContract.Request.DescontoClienteRequest>  request)
        {
            List<BusinessEntity.DescontoCliente> to = new List<Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.DescontoCliente>();

            foreach (DataContract.Request.DescontoClienteRequest item in request)
            {
                to.Add(ToDescontoCliente(item)); 
            }
            return to;
        }

        public BusinessEntity.Parameter.FiltroDescontoCliente ToFiltroDescontoCliente(DataContract.Request.FiltroDescontoClienteRequest request)
        {
            BusinessEntity.Parameter.FiltroDescontoCliente to = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.FiltroDescontoCliente();

            to.ApelidoCliente = request.ApelidoCliente;
            to.CodigoCliente = request.CodigoCliente;
            to.PercentualDescontoAcresimo = request.PercentualDescontoAcresimo;
            if (request.TipoOperacao != null) 
                to.TipoOperacao = (BusinessEntity.Enum.TipoOperacaoDesconto)request.TipoOperacao; 
            return to; 
        }

        public List<BusinessEntity.Parameter.FiltroDescontoCliente> ToFiltroDescontoCliente(List<DataContract.Request.FiltroDescontoClienteRequest> request)
        {
            List<BusinessEntity.Parameter.FiltroDescontoCliente> to = new List<Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.FiltroDescontoCliente>();
            foreach (DataContract.Request.FiltroDescontoClienteRequest item in request)

            {
                to.Add(ToFiltroDescontoCliente(item)); 
                
            }
            return to;
        }


        public BusinessEntity.Parameter.FiltroDescontoChave ToFiltroDescontoCliente(DataContract.Request.FiltroDescontoChaveRequest request)
        {
            BusinessEntity.Parameter.FiltroDescontoChave to = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.FiltroDescontoChave();

            to.Data = request.Data;
            to.PercentualAllIn = request.PercentualAllIn;
            to.PercentualDescontoAcresimo = request.PercentualDescontoAcresimo;
            BusinessEntity.Periodo periodo = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Periodo();
            if (periodo != null)
            {
                periodo.DataFinal = request.Periodo.DataFinal;
                periodo.DataInicial = request.Periodo.DataInicial;
            } 
            to.Periodo = periodo;
            return to;
        }

        public List<BusinessEntity.Parameter.FiltroDescontoChave> ToFiltroDescontoCliente(List<DataContract.Request.FiltroDescontoChaveRequest> request)
        {
            List<BusinessEntity.Parameter.FiltroDescontoChave> to = new List<Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.FiltroDescontoChave>();
            foreach (DataContract.Request.FiltroDescontoChaveRequest item in request)
            {
                to.Add(ToFiltroDescontoCliente(item));

            }
            return to;
        }

    }
}
